perm filename PROJCT.DOC[0,BGB] blob
sn#071769 filedate 1973-11-13 generic text, type T, neo UTF8
00100 THE PERSPECTIVE PROJECTION
00200
00300
00400 Given a three dimensional representation of some objects and the desire
00500 to have a realistic looking two dimensional image of those
00600 objects the process of making the image involves Perspective Projection.
00700
00800 In Nature the Perspective Projection was discovered one billion years
00900 ago with the evolution of the first animals with eyes. It is surprising
01000 that the eyes of verbrates and inverbrates are so similair inspite
01100 of the fact that the differentiation of animals into those with and
01200 those without backbones occured before sight.
01300
01400 In Art the Perspective Projection was discovered and pursued by
01500 the painters of Northern Italy about four hundred years ago.
01600
01700 The invention of the telescope, camera obscura and the microscope
01800 were contempories with the artistic discovery of perspective.
01900 However film for the camera wasn't invented until the early
02000 nineteenth century.
00100 The Image Plane.
00200 Let's insist that the desired image is flat, painting
00300 a perspective image on a dome is a problem for another day.
00400 The Lens Center.
00500 Let's insist that the image desired is similair to the image
00600 formed by a thin circular convex converging lens.
00700 Other classes of lens and images are possible but are
00800 not going to be discussed here. Of Particular irrelevance
00900 are the images formed by four by four matrices in the
01000 Projective Geometry.
01100 The Window.
01200 The image to be formed is Finite and Rectangular.
01300 And the four line segments which discribed the rectangle
01400 of the image are formally called the window and informally
01500 but more accurately the frame or border of the image.
00100 In computer graphics and vision the process of Perspective Projection
00200 depends greatly on WHAT is being projected. Knowing how to project
00300 a point into an image is nice but it doesn't readily lead
00400 to an efficient algorithm for projecting line segments, polygons and
00500 polyhedrons.
00600
00700 The major difficulty lies in `Clipping' the object down to that
00800 portion of it that is in view.
00900
01000 At first encounter Clipping may seem to be a minor nuisance
01100 like Arithmetic Overflow that can be avoided rather than
01200 dealt with, however there appear to be only two ways
00100 α PROJECT PERSPECTIVE OF ALL THE VERTICES;
00200 FOREACH B|BεALBODY DO
00300 FOREACH V|BV⊗B≡V DO
00400 BEGIN "PROJECT VERTEX"
00500 REAL X,Y,Z,XX,YY,ZZ;
00600 INTEGER IX,IY;
00700 X ← ∂(V)[1] - C[4,1]; α TRANSLATION;
00800 Y ← ∂(V)[2] - C[4,2];
00900 Z ← ∂(V)[3] - C[4,3];
01000 XX ← X*C[1,1] + Y*C[2,1] + Z*C[3,1]; α ROTATION;
01100 YY ← X*C[1,2] + Y*C[2,2] + Z*C[3,2];
01200 ZZ ← X*C[1,3] + Y*C[2,3] + Z*C[3,3];
01300 IF ZZ ≤ -FOCAL THEN
01400 BEGIN
01500 ∂(V)[4] ← -XX*SX/ZZ; α PERSPECTIVE IN FRONT OF THE IMAGE PLANE;
01600 ∂(V)[5] ← -YY*SY/ZZ;
01700 ∂(V)[6] ← SZ/ZZ;
01800 END ELSE
01900 BEGIN
02000 ∂(V)[4] ← XX; α CAMERA COORDINATES BEHIND THE IMAGE PLANE;
02100 ∂(V)[5] ← YY;
02200 ∂(V)[6] ← ZZ+FOCAL;
02300 END;
02400 END "PROJECT VERTEX";